home *** CD-ROM | disk | FTP | other *** search
- /^command_table / {
- cmdtbl = $2;
- printf "/* %s.c - automatically generated from %s.ct */\n", \
- rootname, rootname > outfile
- print "#include <ss/ss.h>" > outfile
- print "" >outfile
- }
-
- /^BOR$/ {
- cmdnum++
- options = 0
- cmdtab = ""
- printf "static char const * const ssu%05d[] = {\n", cmdnum > outfile
- }
-
- /^sub/ {
- subr = substr($0, 6, length($0)-5)
- }
-
- /^hlp/ {
- help = substr($0, 6, length($0)-5)
- }
-
- /^cmd/ {
- cmd = substr($0, 6, length($0)-5)
- printf "%s\"%s\",\n", cmdtab, cmd > outfile
- cmdtab = " "
- }
-
- /^opt/ {
- opt = substr($0, 6, length($0)-5)
- if (opt == "dont_list") {
- options += 1
- }
- if (opt == "dont_summarize") {
- options += 2
- }
- }
-
- /^EOR/ {
- print " (char const *)0" > outfile
- print "};" > outfile
- printf "extern void %s __SS_PROTO;\n", subr > outfile
- # Work around a bug in gawk 3.0.5
- awk_bug = cmdnum
- subr_tab[awk_bug] = subr
- options_tab[awk_bug] = options
- help_tab[awk_bug] = help
- }
-
- /^[0-9]/ {
- linenum = $1;
- }
-
- /^ERROR/ {
- error = substr($0, 8, length($0)-7)
- printf "Error in line %d: %s\n", linenum, error
- print "#__ERROR_IN_FILE__" > outfile
- }
-
- END {
- printf "static ss_request_entry ssu%05d[] = {\n", cmdnum+1 > outfile
- for (i=1; i <= cmdnum; i++) {
- printf " { ssu%05d,\n", i > outfile
- printf " %s,\n", subr_tab[i] > outfile
- printf " \"%s\",\n", help_tab[i] > outfile
- printf " %d },\n", options_tab[i] > outfile
- }
- print " { 0, 0, 0, 0 }" > outfile
- print "};" > outfile
- print "" > outfile
- printf "ss_request_table %s = { 2, ssu%05d };\n", \
- cmdtbl, cmdnum+1 > outfile
- }
-
-